/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package framework.dal;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;

/**
 *
 * @author Sérgio Carlos Peres
 */
public class Conexao {

    final private String driver = "org.gjt.mm.mysql.Driver";
    final private String url = "jdbc:mysql://localhost/agenda";
    final private String usuario = "root";
    final private String senha = "ufu2013";
    private Connection conexao;
    public Statement statement;
    public ResultSet resultset;

    public Conexao() {}
    
    /**
     * Conecta com o Banco de Dados.
     * 
     * @return Verdadeiro ao conectar.
     */
    public boolean conecta() {
        boolean result = true;

        try {
            Class.forName(driver);
            conexao = DriverManager.getConnection(url, usuario, senha);
            //JOptionPane.showMessageDialog(null, "Conexão realizada com sucesso!!!");
        } catch (ClassNotFoundException Driver) {
            JOptionPane.showMessageDialog(null, "Drives não Localizados: " + Driver);
            result = false;
        } catch (SQLException Fonte) {
            JOptionPane.showMessageDialog(null, "Erro na Conexão com a fonte de dados. \n\nErro: " + Fonte);
            result = false;
        }

        return result;
    }

    /**
     * Desconecta Banco de Dados
     */
    public void desconecta() {
        boolean result = true;

        try {
            conexao.close();
            //JOptionPane.showMessageDialog(null, "Banco Fechado!");
        } catch (SQLException erroSQL) {
            JOptionPane.showMessageDialog(null, "Não foi possivel fechar o banco de dados. \n\nErro: " + erroSQL.getMessage());
            result = false;
        }
    }
    
    /**
     * Executa Script's: Select.
     * 
     * @param sql Script a ser executado.
     */
    public void executeSelect(String sql) {
        try {
            statement = conexao.createStatement(
                    ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
            resultset = statement.executeQuery(sql);
        } catch (SQLException sqlex) {
            JOptionPane.showMessageDialog(null, "Não foi possivel executar o sql. \n\nErro: " + sqlex.getMessage() + "\n O SQL passado foi: \n" + sql);
        }
    }

    /**
     * Executa Script's: Inset e Update.
     * 
     * @param sql Script a ser executado.
     */
    public void executeScriptVoid(String sql) {
        try {
            statement = conexao.createStatement(
                    ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
            statement.executeUpdate(sql);
        } catch (SQLException sqlex) {
            JOptionPane.showMessageDialog(null, "Não foi possivel executar o sql. \n\nErro: " + sqlex.getMessage() + "\n O SQL passado foi: \n" + sql);
        }
    }

    /**
     * Executa Script's: Delete.
     * 
     * @param sql Script a ser executado.
     * @return 1 para comfirmar a remoção.
     */
    public int executeScriptInt(String sql) {
        int r = 0; // retorno
        try {
            statement = conexao.createStatement(
                    ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
            r = statement.executeUpdate(sql);
        } catch (SQLException sqlex) {
            JOptionPane.showMessageDialog(null, "Não foi possivel executar o sql. \n\nErro: " + sqlex.getMessage() + "\n O SQL passado foi: \n" + sql);
        }
        return r;
    }
}
